#include "DetourLocalBoundary.h"
#ifdef __cplusplus
extern "C" {
#endif
void nav_dtLocalBoundary_Delete(dtLocalBoundary * c_this){
	if(c_this==0){
	    return;
	}
	delete c_this;
}

void nav_dtLocalBoundary_DeleteArray(dtLocalBoundary * c_this){
	if(c_this==0){
		return;
	}
	delete []c_this;
}

dtLocalBoundary * nav_NewdtLocalBoundary(){
	dtLocalBoundary* wrap_out = new dtLocalBoundary();
	return wrap_out;
}

float const * nav_dtLocalBoundary_getCenter(dtLocalBoundary const * c_this){
	float const * c_out = c_this->getCenter();
	float const * wrap_out  = (float const *)(void*)(c_out);
	return wrap_out;
}

float const * nav_dtLocalBoundary_getSegment(dtLocalBoundary const * c_this,int i){
	int c_arg_i=i;
	float const * c_out = c_this->getSegment(c_arg_i);
	float const * wrap_out  = (float const *)(void*)(c_out);
	return wrap_out;
}

int nav_dtLocalBoundary_getSegmentCount(dtLocalBoundary const * c_this){
	int c_out = c_this->getSegmentCount();
	int wrap_out  = (c_out);
	return wrap_out;
}

dtLocalBoundary * nav_dtLocalBoundary_IndexArray(dtLocalBoundary * c_this,long n){
	if(c_this==0){
		return 0;
	}
	c_this+=n;
	return c_this;
}

bool nav_dtLocalBoundary_isValid(dtLocalBoundary * c_this,dtNavMeshQuery * navquery,dtQueryFilter const * filter){
	dtNavMeshQuery * c_arg_navquery=(dtNavMeshQuery *)(void*)(navquery);
	dtQueryFilter const * c_arg_filter=(dtQueryFilter const *)(void*)(filter);
	bool c_out = c_this->isValid(c_arg_navquery,c_arg_filter);
	bool wrap_out  = (c_out);
	return wrap_out;
}

void nav_dtLocalBoundary_reset(dtLocalBoundary * c_this){
	c_this->reset();
}

void nav_dtLocalBoundary_update(dtLocalBoundary * c_this,dtPolyRef ref,float const * pos,float const collisionQueryRange,dtNavMeshQuery * navquery,dtQueryFilter const * filter){
	dtPolyRef c_arg_ref=ref;
	float const * c_arg_pos=(float const *)(void*)(pos);
	float const c_arg_collisionQueryRange=collisionQueryRange;
	dtNavMeshQuery * c_arg_navquery=(dtNavMeshQuery *)(void*)(navquery);
	dtQueryFilter const * c_arg_filter=(dtQueryFilter const *)(void*)(filter);
	c_this->update(c_arg_ref,c_arg_pos,c_arg_collisionQueryRange,c_arg_navquery,c_arg_filter);
}

dtLocalBoundary * nav_NewDtLocalBoundaryPtrArray(long n){
	dtLocalBoundary* c_this=new dtLocalBoundary[n];
	return c_this;
}

#ifdef __cplusplus
}
#endif
